const mysql = require("mysql");
const crypto = require("crypto");

/**
 * 向 MySQL 服务器发送 SQL 语句并执行
 * @param {string} sql 要执行的 SQL 语句
 * @param {array} params SQL 语句中的参数列表
 */
function query(sql, params = []) {
    // 创建链接
    const con = mysql.createConnection({
        host: "localhost",
        port: 3306,
        user: "root",
        password: "root",
        database: "blog",
    });

    // 发送 SQL 语句去执行
    return new Promise((resolve, reject) => {
        // 发送 SQL 语句
        con.query(sql, params, (error, data) => {
            if (error) reject(error);
            else resolve(data);
        });
        // 不发了，发完了
        con.end();
    });
}

/**
 * 给明文密码加密
 * @param {string} raw_password 原始未加密的明文密码
 */
function passwordEncoder(raw_password) {
    return crypto
        .createHmac("sha256", "123ji21j3ij2193j28913j8921u3982u")
        .update(raw_password)
        .digest("hex");
}

module.exports = {
    query,
    passwordEncoder,
};
